#include <iostream>
using namespace std;

/*
    常引用的三个作用
      1.防止引用修改变量值
      2.const修饰引用作为函数形参，实参既可以传递左值，也可以传递右值
      3.如果定义引用指向某个常量，该引用也必须使用const修饰
*/

int main()
{
  int n1 = 56;
  const double pi = 3.14;

  int &b1 = n1; // b1没有用const修饰，因此b1可以修改n1的值

  const int &b2 = n1; // b2用const修饰，因此b2不能修改n1的值

  cout << b1 << endl;
  cout << b2 << endl;
  b1 = 78;
  cout << b1 << endl;

  // 定义引用指向pi
  // double &b3 = pi; // pi是浮点型常量，因此引用也必须对等使用常引用
  const double &b3 = pi;
}

// 面试题： 引用的特点 对引用的理解 引用和指针有什么区别 （不要一句话说话）

/*
    引用和指针有什么区别?
      1.引用在定义时必须初始化，指针没有要求
      2.引用在初始化后不能改变，指针可以改变指向
      3.没有空引用，指针可以为空
*/

